package com.example.myapplication.slice;

import com.example.myapplication.ResourceTable;
import com.example.myapplication.beans.ResultVO;
import com.example.myapplication.beans.User;
import com.example.myapplication.utils.DataBaseUtil;
import com.example.myapplication.utils.HttpRequestUtil;
import com.google.gson.Gson;
import ohos.aafwk.ability.AbilitySlice;
import ohos.aafwk.content.Intent;
import ohos.agp.components.Button;
import ohos.agp.components.TextField;
import ohos.agp.window.dialog.ToastDialog;
import ohos.app.dispatcher.TaskDispatcher;
import ohos.app.dispatcher.task.TaskPriority;

import java.util.Map;

public class LoginAbilitySlice extends AbilitySlice {

    private Gson gson = new Gson();

    @Override
    protected void onStart(Intent intent) {
        super.onStart(intent);
        super.setUIContent(ResourceTable.Layout_ability_login);

        //登录事件监听，若是在mainAbility中用第一种方法加载页面需要将监听写在mainAbility中
        //若是第二种跳转，将监听事件写在loginAbility中即可
        TextField tf1 = findComponentById(ResourceTable.Id_login_name_textField);
        TextField tf2 = findComponentById(ResourceTable.Id_login_pwd_textField);
        Button submitBtn = findComponentById(ResourceTable.Id_login_btn);
        submitBtn.setClickedListener(component -> {
            /**
             * 以下注释的是访问服务器进行动态判断用户存储账号或密码
             */
//            //此处封装工具类
//            TaskDispatcher globalTaskDispatch = getGlobalTaskDispatcher(TaskPriority.DEFAULT);
//            globalTaskDispatch.asyncDispatch(() ->{
//                //服务器接口（自己更改）
//                String urlString = "https://api.muxiaoguo.cn/api/tianqi?city="+"长沙市"+"&type=1";
//                //封装工具类，要在config里配置信息，一个model里，一个deviceConfig配置
//                //s为返回的结果集
//                String s = HttpRequestUtil.sendGetRequest(this, urlString);
//                //此时需要将s解析，解析就需要第三方依赖
//                //在build.gradle里的依赖里添加implementation 'com.google.code.gson:gson:2.8.8'
//                //此为谷歌第三方依赖，然后刷新右侧gradle即可
//                //导入第三方依赖后就可创建以下实例，将对象封装Javabean类
//                System.out.println("------------------------------------------"+s);
//                ResultVO resultVO = gson.fromJson(s,ResultVO.class);
//                System.out.println("-------------------------------------"+resultVO);
//                //根据返回数据判断（自己更改）
//                if (resultVO.getCode() == 200){
//                    //1.将得到的token存入本地数据库fmall_info(自己创建的)
//                    //将键值对存入封装工具类
//                    int i = DataBaseUtil.setValue("token", resultVO.getMsg(), this);
//                    //2.将获取数据转成user的JavaBean对象
//                    String jsonStr = gson.toJson(resultVO.getData());
//                    User user = gson.fromJson(jsonStr,User.class);
//
//
//                    /**
//                     * 以下注释掉的是未创建userJavaBean对象时的业务逻辑
//                     * 如果想要使用下方的代码，只需将第二步的代码注释掉
//                     */
////                    //由于添加购物车时要用到部分数据，要存入本地数据库
////                    Map data = (Map) resultVO.getData();
////
////                    //拆箱
////                    Double id = (Double) data.get("userId");
////                    double did = id;
////                    int userId = (int) did;
//
//                    //存储用户的ID、名字、昵称、和头像
//                    //以便初始化用户中心时在用户中心处调用接口显示用户信息
//                    DataBaseUtil.setValue("userId",user.getUserId()+"",this);
//                    DataBaseUtil.setValue("userName",user.getUsername(),this);
////                    DataBaseUtil.setValue("nickName",user.getNickname(),this);
//                    String userImg = user.getUserImg();
//                    DataBaseUtil.setValue("userImg",userImg.substring(userImg.lastIndexOf("/")+1),this);
//
//
//                    //3.再跳转（要不存入的话，会陷入死循环）
//                    present(new MainAbilitySlice(),new Intent());
//                }else {
//                    new ToastDialog(this).setText("账号或密码错误").show();
//                }
//            });

            //固定代码
            //(tf1.getText().equalsIgnoreCase("翟远帅") || tf1.getText().equalsIgnoreCase("墨中白")) &&
            if ((tf2.getText().equalsIgnoreCase("777") || tf2.getText().equalsIgnoreCase("1025"))){
                //存入本地数据库
                int i = DataBaseUtil.setValue("userName",tf1.getText(),this);

                Intent iUser = new Intent();
                iUser.setParam("userName",tf1.getText());

                present(new MainAbilitySlice(),iUser);
            }else {
                //new ToastDialog(this).setText("账号或密码错误").show();
                ToastDialog toastDialog = new ToastDialog(this);
                toastDialog.setText("账号或密码错误");
                toastDialog.setDuration(3000);
                toastDialog.setOffset(0,1100);
                toastDialog.show();
            }



        });

    }
}
